home *** CD-ROM | disk | FTP | other *** search
/ Mac Mania 2 / MacMania 2.toast / Demo's / Tools&Utilities / Updaters / Symantec C++ 6.0.1 Update / Release Notes / What Changed < prev   
Encoding:
Text File  |  1993-09-21  |  18.7 KB  |  546 lines  |  [TEXT/ttxt]

  1. WHAT CHANGED IN SYMANTEC C++/THINK C 6.0.1
  2. ===========================================
  3. Copyright © 1993 Symantec Corporation. All Rights Reserved.
  4. September 21, 1993
  5. Font: Geneva 12
  6.  
  7. Introduction
  8. ===========
  9. This file describes the changes made to the components of THINK C/Symantec C++ for Macintosh 6.0.1. It is divided into the following sections:
  10.  
  11.    THINK Project Manager
  12.       General
  13.       Browser
  14.       SourceServer
  15.       Scripting
  16.    THINK Debugger
  17.    Symantec C++ translator
  18.    THINK C translator
  19.    THINK Rez translator
  20.    Headers/Libraries
  21.       General
  22.       Apple #includes
  23.       THINK #includes
  24.       Rez #includes
  25.       Mac Libraries
  26.       Standard Libraries
  27.  
  28. THINK Project Manager
  29. ====================
  30. General
  31. -------
  32. • Compile, Precompile, Check Syntax, Preprocess, Disassemble and Make
  33.   progress dialogs are now movable modal dialogs.
  34.  
  35. • The system font is no longer changed to 12 point by the THINK Project
  36.   Manager.
  37.  
  38. • In the Standard file dialog for “Open…”, if no file is selected, hitting
  39.   return is disabled.
  40.  
  41. • In the Search results window, the left and right arrow keys are disabled.
  42.  
  43. • “Print Project” now truncates full pathnames when printing, so they won’t
  44.   overwrite other information.
  45.  
  46. • Attempting to compile or open a file with no associated translator will
  47.   now generate an error message.
  48.  
  49. • Marking the THINK C translator as not preload will no longer cause an
  50.   address error on 68000 machines.
  51.  
  52. • The THINK Project Manager will display the project directory in the standard
  53.   file dialog when the Project Manager is opened by double-clicking on a project
  54.   or via the “Switch to Project” menu item. Extensions which modify the standard
  55.   file dialog box (such as Directory Assistance II) may interfere with this behavior.
  56.  
  57. • The THINK Project Manager now handles aliases to files somewhat
  58.   differently:
  59.  
  60.   Aliases to files can appear anywhere except the project or THINK Project
  61.   Manager “Aliases” folder. Those folders are for aliases to folders only.
  62.  
  63.   The project stores references to the aliases, not to the resolved file. For
  64.   example, suppose a source file #includes "alias.h", which refers to the file
  65.   "real.h". The project remembers the file as "alias.h". Opening the file via
  66.   the pop-up includes menu or Open Selection command will bring up the file
  67.   "real.h" in a window titled "alias.h".
  68.  
  69. • Long filenames in the Make dialog no longer overlap the scroll bar.
  70.  
  71. • XSYM files now have the same name as their owning source file — the .XSYM
  72.   extension is no longer added. The project manager is backward compatible
  73.   with the old naming convention. When searching for an XSYM file, if the
  74.   search for the new style name fails, then the project manager searches for
  75.   the old name. If that is found, the .XSYM extension is removed. A fix was
  76.   also made for temporary XSYMs which have a .TEMP extension. If the
  77.   temporary name exceeds 31 characters, a temporary name of the form
  78.   “XSYM_<random number>” is synthesized.
  79.  
  80. • Option-double-clicking on a name in the editor will now search for mangled
  81.   names if a simple search for the name fails.
  82.  
  83. • Batch search no longer fails when it progresses past the 99th file.
  84.  
  85. • Previously, an application being run under the debugger had a process
  86.   signature of 'KAHL'.  The application now has its true process signature.
  87.  
  88. • Printing a newly created project no longer displays garbage values for code,
  89.   data, and jump table size.
  90.  
  91. • The cancel button in the “Set Tabs & Fonts…” dialog responds correctly to
  92.   mouse-clicks and key presses.
  93.  
  94. Browser
  95. -------
  96. • Selecting an operator method in the Browser now finds the method
  97.   declaration. The operator method will be found even if the operator is an
  98.   inline.
  99.  
  100. • The Browser now works for templates.
  101.  
  102. • The Browser now works on 68000 machines.
  103.  
  104. SourceServer
  105. ------------
  106. • The Newer button in the SourceServer CheckOut dialog now works as
  107.   follows:
  108.  
  109.   If a directory is chosen in the “Checkout to:” pop-up, those files are
  110.   selected whose newest (non-branch) revision is not already in the directory,
  111.   except for any revision which is on a branch. The assumption is that if
  112.   you have checked out a branch, you intend to keep it.
  113.  
  114.   Conversely, holding down the Option key while clicking on the “Newer” button
  115.   selects only revisions of those files if a copy of those files already
  116.   resides in the directory. This is equivalent to using the Checkout
  117.   command with the -update option. The sense is: Select file revisions for
  118.   checkout by the same criterion as “Newer” but do not checkout revisions of
  119.   any files that have not already been checked out to this directory — just
  120.   update the files that are already checked out.
  121.  
  122.   If the “Default Directories” menu item is chosen in the “Checkout to” pop-up,
  123.   the behavior is similar except that it is performed for the entire TPM
  124.   project, not just one directory. If the option key is held down, files
  125.   which cannot be found by the TPM will not be selected. Files which are not
  126.   part of the TPM project will not be selected.
  127.  
  128. • Files in the SourceServer CheckIn dialog now have icons indicating their
  129.   status.
  130.  
  131. • Double-clicking on a file in the SourceServer CheckIn dialog now does
  132.   nothing. This prevents accidental check-ins when what you are really trying
  133.   to do is look at a list of revisions.
  134.  
  135. • Checking out an old version of a file from SourceServer no longer gives a
  136.   spurious error.
  137.  
  138. • If there is diagnostic as well as regular output as the result of a
  139.   command performed via the SourceServer command line, both will be output.
  140.  
  141. • Operations performed on files using MPW projector (or any other
  142.   application which modifies a file’s 'ckid' resource) will now be reflected in
  143.   the THINK Project Manager editor when it is brought to the foreground.
  144.  
  145. • The “Checkout/CheckIn file” menu item (first in the SourceServer menu) is
  146.   no longer enabled when SourceServer is not running.
  147.  
  148. • The THINK Project Manager no longer crashes when you try to check in a
  149.   file which has been marked ‘modify read-only’.
  150.  
  151. • The behavior of the “Default Directories” menu item of the “Checkout to”
  152.   menu in the SourceServer checkout dialog has been modified. It now works as
  153.   follows:
  154.  
  155.   Files will be checked out to the location in which they were last found.
  156.   A file residing in the project or system tree may be moved around within its
  157.   tree — the file will be found and checked out to the correct place. If a
  158.   file cannot be found in the tree in which it was last found, it will be
  159.   checked out to the top level directory of the project tree. An alert is
  160.   posted to warn the user of this. (i.e. “Some files were checked out to the
  161.   directory <project directory>”).
  162.  
  163. • SourceServer operations will no longer time-out. Command-period will
  164.   cancel any SourceServer operation in progress. (NOTE: SourceServer itself
  165.   will finish the command it is currently executing in the background. This
  166.   means that any command event sent to SourceServer from the THINK Project
  167.   Manager must wait for the first one to complete.
  168.  
  169. • The scroll bars now work in the list of revisions in the SourceServer
  170.   Checkout dialog.
  171.  
  172. • Quotes used within the task and comment fields of any of the SourceServer
  173.   dialogs (Checkout, Checkout file, CheckIn, CheckIn file, New Project) are
  174.   now handled correctly.
  175.  
  176. • Only one file at a time can be selected from the revision view of the file
  177.   list in the SourceServer checkout dialog.
  178.  
  179. • The THINK Project Manager no longer erroneously reports that a project has
  180.   been unmounted or no longer exists when in fact this is not the case.
  181.  
  182. • The “Checkout to” pop-up in the SourceServer CheckOut dialog now works
  183.   when checking out an older version of a file.
  184.  
  185. • The list of files in the CheckIn dialog now shows all files in the
  186.   project, including all headers and non-text files.
  187.  
  188. • Choosing the “Source”, “Modified”, “All”, “Headers” or “None” buttons in
  189.   the CheckIn dialog no longer causes a crash when there are no files in the
  190.   project.
  191.  
  192. • A problem in which comments displayed in the checkout window were
  193.   truncated has been fixed. Comments are still limited in length to 255
  194.   characters.
  195.  
  196. • A problem in which files checked in or out with no comment or task or
  197.   projects created with no comment would thereafter display '' in the task and
  198.   comment fields has been fixed.
  199.  
  200. • Files checked in or out with empty comment or task fields — or projects
  201.   created with no comment — used to display " in the task and comment fields.
  202.   This has been fixed.
  203.  
  204. • The CheckOut dialog previously defaulted to “Modifiable”. It now defaults to
  205.   “Read-only”.
  206.  
  207. • Canceling the checkout of a branched file no longer fails.
  208.  
  209. Scripting
  210. --------
  211. • It is now possible to avoid user confirmation when sending a Run or Quit
  212.   event. You must provide “saving yes” or “saving no” to avoid user
  213.   interaction. The following are example AppleScripts:
  214.  
  215.   tell application "THINK Project Manager" 
  216.      Run updating yes saving yes 
  217.   end tell
  218.  
  219.   tell application "THINK Project Manager" 
  220.      Quit saving yes 
  221.   end tell
  222.  
  223. • The Run event now defaults to the project settings if a parameter is
  224.   missing. For example if the debugging parameter is missing, it will default
  225.   to the project setting, rather than FALSE.
  226.  
  227. • The property “full path name” has been added to the AppleScript types
  228.   ‘project document’ and ‘source’ which returns the full path name of the
  229.   specified object, searching for it if it’s not where it was last seen, or
  230.   raise error fnfErr. For example:
  231.  
  232.   tell application "THINK Project Manager"
  233.     set foo to the full path name of the source "temp.cp" in ¬
  234.       the first project document
  235.   end tell
  236.  
  237. • A list of include files referenced by a particular project can now be
  238.   obtained using the following script.
  239.  
  240.   tell application "THINK Project Manager" 
  241.      set proj a reference to project document 1 
  242.      copy include files of proj to theIncludes 
  243.   end tell
  244.  
  245. • The 'aete' resource now reflects the actual classes and events supported
  246.   by the THINK Project Manager.  The 'aete' resource is used by Apple Script
  247.   to display the THINK Project Manager’s dictionary.
  248.  
  249. THINK Debugger
  250. ==============
  251. • The debugger will no longer crash when debugging AOCE applications that use
  252.   Standard Directory.
  253.  
  254. • A memory leak associated with stepping through header files has been fixed.
  255.  
  256. • A problem with displaying variables of type unsigned char as unsigned
  257.   decimal has been fixed.
  258.  
  259. Symantec C++ translator
  260. ======================
  261.     •••••••••
  262.  IMPORTANT
  263.     •••••••••
  264.     
  265. All precompiled headers must be re-precompiled to use the new translator.
  266. In addition, object layout has changed, so be sure to recompile all C++ object
  267. code from scratch.
  268.  
  269. Overall, these areas of the compiler were addressed:
  270.  
  271.     -    error reporting and handling
  272.     -    template generation
  273.     -    multiple inheritance
  274.  
  275. •    new_by_name() now works correctly on 68000 Macs, and cleans up the
  276.         stack correctly.
  277.  
  278. •    Members of multiply-inherited classes now appear correctly in debugger
  279.   struct window.
  280.  
  281. •    Calling ldiv() no longer corrupts the stack.
  282.  
  283. •    Data window expressions no longer get truncated if they contain errors.
  284.  
  285. • Aggregate results whose size is 4 bytes or less are now returned
  286.         correctly from routines that use C++ calling conventions. (They are now
  287.         passed in register D0.)
  288.  
  289. •    Aggregate results for C++ routines that have more than one argument
  290.         work correctly now.
  291.  
  292. •    10 byte double results for C routines are now returned correctly.
  293.  
  294. •    Data window expressions no longer produce internal errors.
  295.  
  296. •    #pragma once now works like THINK C with respect to case-sensitive
  297.         file name matching.
  298.  
  299. •    Doubles that are part of a const struct pointer or reference are now
  300.         passed correctly.
  301.  
  302. •    Compatibility issues with 68000 Macs and PowerBook 100 Macs have
  303.         been fixed.
  304.  
  305. •    C++ comments that contain single or double quotes following
  306.         preprocessor directives with “ANSI conformance” on now work correctly.
  307.  
  308. •    Template functions may be declared static or inline.
  309.  
  310. •    The error handling has been improved when encountering erroneous template
  311.         declarations.
  312.  
  313. •    The built-in name “comp” is not recognized when strict ANSI conformance
  314.         is on.
  315.     
  316. •    Conditional expressions with enum (or smaller-than-int) arguments are
  317.         not promoted to int.
  318.  
  319. •    asm() is now allowed when ANSI relaxed is used.
  320.  
  321. •    Many bugs with multiple inheritance have been fixed, especially those
  322.   involving virtual base and non-virtual base hierarchies.
  323.  
  324. •    The bug with operator overloading and forward declared types has been fixed.
  325.  
  326. •    Error handling is more robust.
  327.  
  328. •    Spurious “code segment too large” error in switch statement code generation
  329.   has been fixed.
  330.  
  331. •    The code generation bug with conditional operators has been fixed.
  332.  
  333. •    C calling conventions for functions that return structs now work.
  334.  
  335. •    Template bug with inappropriate “member functions cannot be static” error
  336.         fixed.
  337.  
  338. •    Member functions no longer hide base class functions of the same name for
  339.         PascalObject derived classes.
  340.  
  341. •    Overloaded operator[]() now works correctly with respect to non-int
  342.         arguments.
  343.  
  344. •    There is now better error reporting for errors that occur during template expansion.
  345.  
  346. •    Multiple-inheritance code generation has been improved.
  347.  
  348. •    Friend declaration of a function previously declared as static no longer
  349.         changes the function’s linkage.
  350.  
  351. •    The bug in transcendental MC68881 code generation was fixed.
  352.  
  353. •    Empty non-virtual destructors that are generated out of line no longer
  354.         produce incorrect code.
  355.  
  356. •    Floating point struct member passed as argument to routine with pascal
  357.         calling conventions no longer produces incorrect code.
  358.  
  359. •    The compiler now flags overloaded PascalObject member functions as errors.
  360.  
  361. •    The code generation bug with pointer and bitwise & was fixed.
  362.  
  363. •    Decrement operator applied to HandleObject class member no longer
  364.         modifies “this” pointer.
  365.  
  366. •    Initializing an array of pointers to functions with fixed array bounds
  367.         no longer produces an internal error.
  368.  
  369. •    Internal error when compiling an expression with a conditional operator
  370.         no longer occurs.
  371.  
  372. •    The compiler now allows destructors to be called with C calling conventions
  373.         (via the __cdecl directive).
  374.  
  375. •    Arithmetic expressions involving non-int sized enums work.
  376.         In some cases this bug caused an internal error, in CDorth.c, line 211.
  377.  
  378. •    Header files work better in the debugger.
  379.         Stepping into or setting breakpoints in a header file will no longer cause
  380.         the “flashing source” problem.
  381.  
  382. •    Syntax error in enum no longer causes crash.
  383.  
  384. •    Access denied error message with templates now has correct unmangled
  385.         names.
  386.  
  387. •    Internal error in mangle.c when compiling function with comp argument
  388.         no longer occurs.
  389.  
  390. •    Displaying static variables in dataview window now works.
  391.  
  392. •    Compiler produces a warning when a class’ key function is later declared
  393.         inline.
  394.  
  395. •    Specifying the size of an initialized aggregate that has an initializer
  396.         that contains expressions of non-basic types no longer causes an internal
  397.         error.
  398.  
  399. •    You can now specify nested types in a C++ style cast.
  400.  
  401. •    Syntax errors during template expansion will no longer cause crashes.
  402.  
  403. •    The compiler no longer generates MacsBug names when no link
  404.         instruction is generated.
  405.  
  406. •    The size of PascalObject objects as placed in class info proc is now
  407.         correct for model far objects.
  408.  
  409. •    The memory leaks have been fixed.
  410.  
  411. •    Fixed numerous internal errors:
  412.                 CGcs.c, line 227
  413.                 init.c, line 983
  414.                 CGcntrl.c, line 400
  415.                 mangle.c, line 484
  416.                 cpp.c, line 4234
  417.                 CGreslt.c, line 41
  418.                 CGcod.c, line 316
  419.                 CGfunc.c, line 702
  420.  
  421. THINK C translator
  422. =================
  423. • The THINK_C macro now expands to “6”, not “5”.
  424.  
  425. • The compiler now recognizes complex re-used array type names in method
  426.   parameter lists.
  427.  
  428. THINK Rez translator
  429. ===================
  430. • THINK Rez no longer crashes when a type mismatch occurs in an enumeration
  431.   constant.
  432.   
  433. • In certain cases it was possible for an undefined constant to cause a
  434.   crash. This has been fixed.
  435.  
  436. • Putting a numeric literal in a resource statement where a string was
  437.   expected caused a bus error. It no longer does.
  438.  
  439. • In some cases lower case hex constants were not recognized correctly. Now
  440.   they are.
  441.  
  442. • The compiler now signals an error when the specified size of a string type
  443.   is out of range for that type.
  444.  
  445. • The INCLUDE … AS … function did not set the new resource type correctly.
  446.   Now it does.
  447.  
  448. • $$Format now works exactly like the standard library function sprintf
  449.   (with the Rez restriction on the number of arguments).
  450.   
  451. • $$Time, $$Date, $$Version didn’t work. Now they do.
  452.  
  453. • $$Day, $$Month, $$Year, $$Hour, $$Minute, $$Second, $$Month, $$Weekday didn’t
  454.   return correct values. Now they do.
  455.   
  456. • String literals are truncated correctly.
  457.  
  458. • THINK Rez will accept size qualifying suffixes (L,U,UL,LU and whatever case
  459.   combinations you please) on numeric hex literals. These have no meaning.
  460.   
  461. • Overflows of numeric constants are flagged by the compiler. Note that it is
  462.   impossible to detect long integer overflows.
  463.   
  464. • String literals containing less than four characters are handled correctly.
  465.  
  466. HEADERS/LIBRARIES
  467. ==================
  468. General
  469. -------
  470. • Mac #includes.c was updated to contain the new headers (see below) and a new
  471.   MacHeaders was built.
  472.  
  473. Apple #includes
  474. --------------
  475. • The lower-case toolbox routines are now conditionalized out of the following:
  476.  
  477.     Controls.h
  478.     Desk.h
  479.     Dialogs.h
  480.     DiskInit.h
  481.     Files.h
  482.     Fonts.h
  483.     Lists.h
  484.     Menus.h
  485.     OSUtils.h
  486.     Packages.h
  487.     QuickDraw.h
  488.     Resources.h
  489.     SegLoad.h
  490.     StandardFile.h
  491.     TextEdit.h
  492.     ToolUtils.h
  493.     Windows.h
  494.  
  495. • AppleEvents.h was updated from the MPW 3.3 released headers.
  496.  
  497. • The following headers from MPW 3.3 were added:
  498.  
  499.     ActionAtomIntf.h
  500.     AEObjects.h
  501.     AEPackObject.h
  502.     AERegistry.h
  503.     ImageCodec.h
  504.     ImageCompression.h
  505.     MediaHandlers.h
  506.     Movies.h
  507.     MoviesFormat.h
  508.     QuickTimeComponents.h
  509.  
  510. • A C++ style comment was removed from QDOffScreen.h
  511.  
  512. • Types.h was modified so that extended80 == extended == long double when
  513.   compiling SANE native floating point.
  514.  
  515. THINK #includes
  516. --------------
  517. • A circular dependency between BDC.h and Packages.h was fixed.
  518.  
  519. Rez #includes
  520. ------------
  521. • The following include from MPW 3.3 were added:
  522.  
  523.     AERegistry.r
  524.     ImageCodec.r
  525.  
  526. Mac Libraries
  527. ------------
  528. • These libraries were rebuilt to fix the smart linking bug introduced in 6.0.
  529.  
  530. • Two new libraries were added: OSL and QuickTime. OSL contains Apple’s
  531.   Object Support Library, and QuickTime contains QuickTime related functions.
  532.  
  533. Standard Libraries
  534. -----------------
  535. • printf and scanf (and related functions) would crash when ANSI/ANSI++ was
  536.   built with both 68881 code generation and 4-byte ints. This has been fixed.
  537.  
  538. • Code that called _exiting() without first installing any termination functions
  539.   (whether implicitly or explicitly) caused a bus error. This has been fixed.
  540.  
  541. • size_t.h lacked a final carriage return which would cause an error when
  542.   compiling with strict ANSI conformance. This has been fixed.
  543.  
  544. • When copying inverse text from a console window the high bits of the
  545.   characters were not cleared correctly. This has been fixed.
  546.